#include<iostream>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
class ANS
{
public:
	int a1,a2,a3,a4,a5;
	ANS(int a,int b,int c,int d,int e)
	{
		a1=a;
		a2=b;
		a3=c;
		a4=d;
		a5=e;
	}
};
bool cmp(const ANS &A1,const ANS &A2)
{
	return (A1.a1<A2.a1)||(A1.a1==A2.a1&&A1.a2<A2.a2)||(A1.a1==A2.a1&&A1.a2==A2.a2&&A1.a3<A2.a3);
}
vector<int> v3[12][12],v4[12];
int s,a;
bool b[1000001]={0};
inline bool prime(int n)
{
	if(n%2==0)return 0;
	int i;
	for(i=3;i*i<=n;i+=2)
		if(n%i==0)return 0;
	return 1;
}
inline int nbit(int n,int b)
{
	if(b==1)return n%10;
	else if(b==2)return (n/10)%10;
	else if(b==3)return (n/100)%10;
	else if(b==4)return (n/1000)%10;
	else return n/10000;
}
inline bool i1379(const int n)
{
	return n==1||n==3||n==7||n==9;
}
int main()
{
	cin>>s>>a;
	vector<ANS> ans;
	int i,j,k,l,p,n,m[19],c[8][8];
	bool b2[11][11]={0},b3[11][11][11]={0},b4[11][11][11][11]={0},b2b[11][11]={0},b3b[11][11][11]={0};
	for(i=1;i<=9&&i<=s;i++)
		for(j=0;j<=9&&i+j<=s;j++)
			for(k=0;k<=9&&i+j+k<=s;k++)
				for(l=0;l<=9&&i+j+k+l<s;l++)
				{
					if(s-i-j-k-l>=0&&s-i-j-k-l<=9)
					{
					    n=10000*i+1000*j+100*k+10*l+s-i-j-k-l;
					    if(prime(n))
						{
						    b[n]=1;
						    b2[i][j]=1;
						    b3[i][j][k]=1;
						    b4[i][j][k][l]=1;
						    b3b[i][l][s-i-j-k-l]=1;
						    if(i1379(j)&&i1379(k)&&i1379(l))
							{
							    b2b[i][j]=1;
							    v3[i][j].push_back(n);
							}
						    if(j*k*l!=0)v4[i].push_back(n);
						}
					}
				}
	for(i=0;i<v4[a].size();i++) //1
	{
		m[1]=v4[a][i];
		c[1][1]=nbit(m[1],5);
		c[1][2]=nbit(m[1],4);
		c[1][3]=nbit(m[1],3);
		c[1][4]=nbit(m[1],2);
		c[1][5]=nbit(m[1],1);
		for(j=0;j<v4[a].size();j++) //2
		{
			m[6]=v4[a][j];
			c[2][1]=nbit(m[6],4);
			c[3][1]=nbit(m[6],3);
			c[4][1]=nbit(m[6],2);
			c[5][1]=nbit(m[6],1);
			for(c[2][2]=0;c[2][2]<=9;c[2][2]++) //3
			{
				if(b2[c[1][1]][c[2][2]]&&b2[c[1][2]][c[2][2]]&&b2[c[2][1]][c[2][2]])
				{
					for(c[2][3]=0;c[2][3]<=9;c[2][3]++) //4
					{
						if(b2[c[1][3]][c[2][3]]&&b3[c[2][1]][c[2][2]][c[2][3]])
						{
							for(c[2][4]=0;c[2][4]<=9;c[2][4]++) //5
							{
								if(b3b[c[5][1]][c[2][4]][c[1][5]]&&b2[c[1][4]][c[2][4]]&&b4[c[2][1]][c[2][2]][c[2][3]][c[2][4]])
								{
									c[2][5]=s-c[2][1]-c[2][2]-c[2][3]-c[2][4];
									m[2]=10000*c[2][1]+1000*c[2][2]+100*c[2][3]+10*c[2][4]+c[2][5];
									if(i1379(c[2][5])&&b[m[2]]&&b2b[c[1][5]][c[2][5]])
									{
										for(c[3][2]=0;c[3][2]<=9;c[3][2]++) //6
										{
											if(b2[c[3][1]][c[3][2]]&&b3[c[1][2]][c[2][2]][c[3][2]])
											{
												for(c[3][3]=0;c[3][3]<=9;c[3][3]++) //7
												{
													c[4][2]=s-c[5][1]-c[3][3]-c[2][4]-c[1][5];
													m[12]=10000*c[5][1]+1000*c[4][2]+100*c[3][3]+10*c[2][4]+c[1][5];
													c[5][2]=s-c[1][2]-c[2][2]-c[3][2]-c[4][2];
													m[7]=10000*c[1][2]+1000*c[2][2]+100*c[3][2]+10*c[4][2]+c[5][2];
													if(c[4][2]>=0&&c[4][2]<=9&&i1379(c[5][2])&&b[m[7]]&&b[m[12]])
													{
														if(b2b[c[5][1]][c[5][2]])
														{
															for(k=0;k<v3[c[5][1]][c[5][2]].size();k++) //8
															{
																m[5]=v3[c[5][1]][c[5][2]][k];
																c[5][3]=nbit(m[5],3);
																c[5][4]=nbit(m[5],2);
																c[5][5]=nbit(m[5],1);
																c[4][3]=s-c[1][3]-c[2][3]-c[3][3]-c[5][3];
																m[8]=10000*c[1][3]+1000*c[2][3]+100*c[3][3]+10*c[4][3]+c[5][3];
																c[4][4]=s-c[1][1]-c[2][2]-c[3][3]-c[5][5];
																m[11]=10000*c[1][1]+1000*c[2][2]+100*c[3][3]+10*c[4][4]+c[5][5];
																c[4][5]=s-c[4][1]-c[4][2]-c[4][3]-c[4][4];
																m[4]=10000*c[4][1]+1000*c[4][2]+100*c[4][3]+10*c[4][4]+c[4][5];
																c[3][4]=s-c[1][4]-c[2][4]-c[4][4]-c[5][4];
																m[9]=10000*c[1][4]+1000*c[2][4]+100*c[3][4]+10*c[4][4]+c[5][4];
																c[3][5]=s-c[3][1]-c[3][2]-c[3][3]-c[3][4];
																m[3]=10000*c[3][1]+1000*c[3][2]+100*c[3][3]+10*c[3][4]+c[3][5];
																m[10]=10000*c[1][5]+1000*c[2][5]+100*c[3][5]+10*c[4][5]+c[5][5];
																if(c[4][3]>=0&&c[4][3]<=9&&c[4][4]>=0&&c[4][4]<=9&&c[3][4]>=0&&c[3][4]<=9&&i1379(c[3][5])&&i1379(c[4][5])&&b[m[1]]&&b[m[2]]&&b[m[3]]&&b[m[4]]&&b[m[5]]&&b[m[6]]&&b[m[7]]&&b[m[8]]&&b[m[9]]&&b[m[10]]&&b[m[11]]&&b[m[12]])
																{
																	ans.push_back(ANS(m[1],m[2],m[3],m[4],m[5]));
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	sort(ans.begin(),ans.end(),cmp);
	for(i=0;i<ans.size();i++)
		printf("%d\n%d\n%d\n%d\n%d\n\n",ans[i].a1,ans[i].a2,ans[i].a3,ans[i].a4,ans[i].a5);
	return 0;
}
